import scrapy

from scrapy_dangdang_Dome.items import ScrapyDangdangDomeItem


class DangSpider(scrapy.Spider):
    name = "dang"
    #如果是多页下载，需要调整allowed_domains
    allowed_domains = ["category.dangdang.com"]
    start_urls = ["https://category.dangdang.com/cid4003728.html"]
    base_url="https://category.dangdang.com/pg"
    page=1

    def parse(self, response):
        # piplines 下载数据的
        # items 定义数据结构的
        # /html/body/ div[2] / div / div[3] / div[1] / div[1] / div[2] / div / ul / li / a / img / @ src
        # / html / body / div[2] / div / div[3] / div[1] / div[1] / div[2] / div / ul / li / a / img / @ alt
        # //ul[@id="component_47"]//p[@class="price"]/span/text()
        li_list=response.xpath('//ul[@id="component_47"]//li//a[@class="pic"]')
        prices = response.xpath('//p[@class="price"]/span/text()').extract()
        i=0
        for li in li_list:
            if i<8:
                name = li.xpath('./img/@alt').extract_first()
                src = li.xpath('./img/@src').extract_first()
            else :
                name = li.xpath('./img/@alt').extract_first()
                src = li.xpath('./img/@data-original').extract_first()
            product=ScrapyDangdangDomeItem(name=name,price=prices[i],src=src)
            i+=1
            #获取一个商品数据就返回一个item
            yield product


        #每一页的爬取逻辑是一样的,只是url不同,我们只需要对每次调整的url进行拼接即可，调用parse方法即可
        if self.page<100:
            self.page+=1
            next_url=self.base_url+str(self.page)+"-cid4003728.html"
            # scrapy.Request(url,callback=方法名)表示下载url页面，并调用parse方法
            #注意回调函数的参数是response，不需要加（）
            yield scrapy.Request(next_url,callback=self.parse)

